package com.llt.blog.utils;

import lombok.extern.slf4j.Slf4j;
import org.springframework.util.DigestUtils;

import java.util.UUID;

@Slf4j
public class SecurityUtils {

//    加密
    public static String encrypt(String password) {
        // 明文密码 password

        // 生成随机的不会重复的值 -- 盐值
        String salt = UUID.randomUUID().toString().replace("-", "");

        // 对盐值和明文进行加密 -- 密文
        String securityPassword = DigestUtils.md5DigestAsHex((password + salt).getBytes());

        // 最后存在数据库里的值 -- 盐值 + 密文
        String finalPassword = salt + securityPassword;

        return finalPassword;
    }

//    解密
    public static boolean verify(String password, String sqlPassword) {
        // finalPassword = salt + md5(salt + password)
        if (sqlPassword == null || sqlPassword.length() != 64) {
            log.error("密码格式错误");
            return false;
        }

        // 1. 先得到 salt，使用用户输入的密码生成一个 finalPassword
        String salt = sqlPassword.substring(0, 32);

        String secretPassword = DigestUtils.md5DigestAsHex((salt + password).getBytes());

        String finalPassword = salt + secretPassword;

        return finalPassword.equals(sqlPassword);
    }
}
